Laravel除了config資料夾可以處理特定開發情境之外,還有.env做更細節的規範。
在專案資料夾中可以發現兩個與 .env 有關的檔案
.env
.env.example
個人是把.env當作一種全域變數來看待,Laravel會取用裡頭的設定檔。
但因 .gitignore的關係,部署gcp時可能一開始會找不到.env,到時候可以複製 .env.example進行設定。
以下就個人常用與已知的設定部分進行說明
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:ABCDDSFSFASFDCZCCDDFFDSAFFDSF
APP_DEBUG=true
APP_URL=http://localhost
php artisan generate key
產生一組。LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
這部分是設定如何連線資料庫的方式,需設定使用使用者名稱、使用者密碼、資料庫名稱。
如同設定database GUI tool一般,讓專案可以順利連上資料庫。
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
也有人的做法是透過composer處理AWS的設定,目前個人使用gcp這段code無需修改
BROADCAST_DRIVER=log
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
可用用Pusher來實作推播通知
JWT
如果使用JWT驗證會產生 JWT_SECRET
JWT_SECRET=GsadsadsadasdafasdfasdfsasczxvdffqewdewfLoQju8O7vV
SESSION
SESSION_DRIVER=file
SESSION_LIFETIME=120
Laravel的session跟php原生略有差異,如果想延長時效或進階設定可以從這處理。
緩存
CACHE_DRIVER=file
還有array、memcached、redis、database等選項,但仍有其他檔案要設定才能啟用。
情境:
因為Laravel預設處理時間的方式是timestamp,如果希望時間為開發者當下時區時,需要額外設定顯示時間的時區。
方法:
進入 config/app.php
'timezone' => 'UTC',
改為
'timezone' => 'Asia/Taipei',
設定完成後,基本上database顯示的時間會以當下的時區為主。
參考資料
https://laracasts.com/discuss/channels/laravel/incorrect-time-in-created-at?page=1
https://docs.laravel-dojo.com/laravel/5.5/configuration#environment-configuration
https://artisansweb.net/sending-email-via-gmail-smtp-server-laravel/
https://cloud.tencent.com/developer/article/1627439
https://ithelp.ithome.com.tw/articles/10231475